package net.hn.hnms.biz.equipment.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.hn.hnms.biz.equipment.domain.CoalMineSysPointPo;
import net.hn.hnms.biz.equipment.domain.dto.HisDto;
import net.hn.hnms.biz.equipment.domain.dto.NowDto;
import net.hn.hnms.biz.equipment.domain.dto.SynergiaSysPointDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 重大设备编码配置表Mapper
 */
public interface CoalMineSysPointMapper extends BaseMapper<CoalMineSysPointPo> {

    /**
     * 分页条件查询空压机实时数据
     *
     * @param pageSize
     * @param pageNum
     * @param nowDTO
     * @return
     */
    List<SynergiaSysPointDto> selectSynergiaPageList(@Param("pageSize") Integer pageSize, @Param("pageNum") Integer pageNum, @Param("nowDTO") NowDto nowDTO);

    /**
     * 分页条件查询空压机实时数据
     *
     * @param pageSize
     * @param pageNum
     * @param nowDTO
     * @return
     */
    List<SynergiaSysPointDto> selectCompressorPageList(@Param("pageSize") Integer pageSize, @Param("pageNum") Integer pageNum, @Param("nowDTO") NowDto nowDTO);

    List<SynergiaSysPointDto> selectFanPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum,@Param("nowDTO") NowDto nowDTO);

    List<SynergiaSysPointDto> selectDrainagePageList(@Param("pageSize")Integer pageSize,@Param("pageNum") Integer pageNum, @Param("nowDTO")NowDto nowDTO);

    List<SynergiaSysPointDto> selectIncliHoistingPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("nowDTO")NowDto nowDTO);

    List<SynergiaSysPointDto> selectCoalflowPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("nowDTO")NowDto nowDTO);
    //快速掘进实时数据
    List<SynergiaSysPointDto> selectDrivagePageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("nowDTO")NowDto nowDTO);

    List<SynergiaSysPointDto> selectRailPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("nowDTO")NowDto nowDTO);
    List<SynergiaSysPointDto> selectSynergiaHisPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("hisDto") HisDto hisDto);

    List<SynergiaSysPointDto> selectShaftPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("nowDTO")NowDto nowDTO);


    List<SynergiaSysPointDto> selectShaftHisPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("hisDto") HisDto hisDto);


    /**
     * 查询制氮now
     * @param pageSize
     * @param pageNum
     * @param nowDTO
     * @return
     */
    List<SynergiaSysPointDto> selectNitrogenPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("nowDTO")NowDto nowDTO);

    /**
     * 查询制氮his
     * @param pageSize
     * @param pageNum
     * @param hisDto
     * @return
     */
    List<SynergiaSysPointDto> selectNitrogenHisPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("hisDto") HisDto hisDto);

    List<SynergiaSysPointDto> selectCoalflowHisPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("hisDto") HisDto hisDto);
    //快速掘进历史数据
    List<SynergiaSysPointDto> selectDrivageHisPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("hisDto") HisDto hisDto);
    List<SynergiaSysPointDto> selectCompressorHisPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("hisDto") HisDto hisDto);
    List<SynergiaSysPointDto> selectDrainageHisPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("hisDto") HisDto hisDto);
    List<SynergiaSysPointDto> selectIncliHoistingHisPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("hisDto") HisDto hisDto);
    List<SynergiaSysPointDto> selectRailHisPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("hisDto") HisDto hisDto);
    List<SynergiaSysPointDto> selectFanHisPageList(@Param("pageSize")Integer pageSize, @Param("pageNum")Integer pageNum, @Param("hisDto") HisDto hisDto);

    List<SynergiaSysPointDto> selectDrivageNowInfo(@Param("valueType")String valueType, @Param("value")Integer value, @Param("mineCode") String mineCode);

    //获取主排水水泵数
    List<Map<String,Object>> selectDrainageCount();
    //获取主排水水泵分组
    List<Map<String,Object>> selectDrainagePage();
    //获取主排水水泵正常运行数
    Map<String,Long> drainageNormalOperationCount(@Param("mineCode")String mineCode);
    //获取主排水水泵正常运行数按时间分组
    List<Map<String,Object>> drainageNormalOperationCountByTime(@Param("mineCode")String mineCode,@Param("dataTime")String dataTime);

    //获取主通风风机数
    List<Map<String,Object>> fanStatistics();
    //获取主通风正常运行风机数
    Map<String,Long> fanNormalOperationCount(@Param("mineCode")String mineCode);

    //获取主通风正常运行风机数按时间分组
    List<Map<String,Object>> fanNormalOperationCountByTime(@Param("mineCode")String mineCode,@Param("dataTime")String dataTime);

    //获取斜井提升
    List<Map<String,Object>> inclineStatistics();

    //获取采煤机数
    List<Map<String,Object>> thermalShockShaftStatistics();
    //获取采煤机报警数
    List<Map<String,Object>> thermalShockAlarmCount(@Param("mineCode")String mineCode);
    //获取采煤机报警数按时间分组
    List<Map<String,Object>> thermalShockAlarmCountByTime(@Param("mineCode")String mineCode,@Param("dataTime")String dataTime);

    //获取掘进机数
    List<Map<String,Object>> drivageShaftStatistics();
    //获取采煤机数
    List<Map<String,Object>> drivageShaftAlarmCount(@Param("mineCode")String mineCode);
    //获取采煤机数
    List<Map<String,Object>> drivageShaftAlarmCountByTime(@Param("mineCode")String mineCode,@Param("dataTime")String dataTime);
    /**
     * 根据index 获取支架文本值
     * @param index 1：压力， 2：行程， 3：模式，4：x角度，5：y角度，6：z角度，7：红外
     * @param mineCode 煤矿编码
     * @return
     */
    String supportTypeName(@Param("index") String index,@Param("mineCode")String mineCode);

    /**
     *  支架文本值列表
     * @param mineCode 煤矿编码
     * @return
     */
    List<String> supportTypeNameList(@Param("mineCode")String mineCode);

    /**
     * 获取术语表中的tag数据值  风机：运行状态、风速、风量
     * @param mineCode
     * @return
     */
    List<CoalMineSysPointPo> selectVolumeAndSpeedTagList(@Param("mineCode") String mineCode);
}
